{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Predicting stock price moves with Logistic Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports & Settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:05.201363Z",
     "start_time": "2020-06-17T19:38:05.199559Z"
    }
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:05.677348Z",
     "start_time": "2020-06-17T19:38:05.202782Z"
    }
   },
   "outputs": [],
   "source": [
    "from pathlib import Path\n",
    "import sys, os\n",
    "from time import time\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "from scipy.stats import spearmanr\n",
    "\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:05.681035Z",
     "start_time": "2020-06-17T19:38:05.678332Z"
    }
   },
   "outputs": [],
   "source": [
    "sys.path.insert(1, os.path.join(sys.path[0], '..'))\n",
    "from utils import MultipleTimeSeriesCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:05.691199Z",
     "start_time": "2020-06-17T19:38:05.682060Z"
    }
   },
   "outputs": [],
   "source": [
    "sns.set_style('darkgrid')\n",
    "idx = pd.IndexSlice"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:05.700829Z",
     "start_time": "2020-06-17T19:38:05.692091Z"
    }
   },
   "outputs": [],
   "source": [
    "YEAR = 252"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.567293Z",
     "start_time": "2020-06-17T19:38:05.701735Z"
    }
   },
   "outputs": [],
   "source": [
    "with pd.HDFStore('data.h5') as store:\n",
    "    data = (store['model_data']\n",
    "            .dropna()\n",
    "            .drop(['open', 'close', 'low', 'high'], axis=1))\n",
    "data = data.drop([c for c in data.columns if 'year' in c or 'lag' in c], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Select Investment Universe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.583746Z",
     "start_time": "2020-06-17T19:38:07.568747Z"
    }
   },
   "outputs": [],
   "source": [
    "data = data[data.dollar_vol_rank<100]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Create Model Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.602393Z",
     "start_time": "2020-06-17T19:38:07.585403Z"
    }
   },
   "outputs": [],
   "source": [
    "y = data.filter(like='target')\n",
    "X = data.drop(y.columns, axis=1)\n",
    "X = X.drop(['dollar_vol', 'dollar_vol_rank', 'volume', 'consumer_durables'], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Logistic Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define cross-validation parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.607270Z",
     "start_time": "2020-06-17T19:38:07.603877Z"
    }
   },
   "outputs": [],
   "source": [
    "train_period_length = 63\n",
    "test_period_length = 10\n",
    "lookahead =1\n",
    "n_splits = int(3 * YEAR/test_period_length)\n",
    "\n",
    "cv = MultipleTimeSeriesCV(n_splits=n_splits,\n",
    "                          test_period_length=test_period_length,\n",
    "                          lookahead=lookahead,\n",
    "                          train_period_length=train_period_length)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.615124Z",
     "start_time": "2020-06-17T19:38:07.608538Z"
    }
   },
   "outputs": [],
   "source": [
    "target = f'target_{lookahead}d'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.639650Z",
     "start_time": "2020-06-17T19:38:07.616007Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    56486\n",
       "0    53189\n",
       "Name: label, dtype: int64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.loc[:, 'label'] = (y[target] > 0).astype(int)\n",
    "y.label.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.642787Z",
     "start_time": "2020-06-17T19:38:07.640677Z"
    }
   },
   "outputs": [],
   "source": [
    "Cs = np.logspace(-5, 5, 11)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:38:07.651897Z",
     "start_time": "2020-06-17T19:38:07.643550Z"
    }
   },
   "outputs": [],
   "source": [
    "cols = ['C', 'date', 'auc', 'ic', 'pval']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Run cross-validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:40:08.326643Z",
     "start_time": "2020-06-17T19:38:07.653010Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1e-05\n",
      "\t  3.4 | 010 |  -0.27% |  50.44%\n",
      "\t  4.7 | 020 |   1.96% |  51.88%\n",
      "\t  6.0 | 030 |   2.83% |  52.01%\n",
      "\t  7.3 | 040 |   3.26% |  51.98%\n",
      "\t  8.6 | 050 |   3.95% |  52.44%\n",
      "\t  9.8 | 060 |   3.95% |  52.27%\n",
      "\t 11.1 | 070 |   4.75% |  52.61%\n",
      "0.0001\n",
      "\t  1.3 | 010 |  -0.01% |  50.64%\n",
      "\t  2.5 | 020 |   2.32% |  52.07%\n",
      "\t  3.8 | 030 |   3.24% |  52.28%\n",
      "\t  5.1 | 040 |   3.36% |  52.10%\n",
      "\t  6.4 | 050 |   4.04% |  52.54%\n",
      "\t  7.7 | 060 |   4.03% |  52.34%\n",
      "\t  9.0 | 070 |   4.88% |  52.70%\n",
      "0.001\n",
      "\t  1.1 | 010 |   0.47% |  50.98%\n",
      "\t  2.4 | 020 |   2.59% |  52.18%\n",
      "\t  3.7 | 030 |   3.65% |  52.51%\n",
      "\t  5.0 | 040 |   3.21% |  52.10%\n",
      "\t  6.3 | 050 |   3.87% |  52.52%\n",
      "\t  7.6 | 060 |   4.08% |  52.37%\n",
      "\t  8.9 | 070 |   4.96% |  52.75%\n",
      "0.01\n",
      "\t  1.3 | 010 |   0.76% |  51.17%\n",
      "\t  2.7 | 020 |   2.46% |  52.02%\n",
      "\t  4.1 | 030 |   3.71% |  52.45%\n",
      "\t  5.6 | 040 |   3.17% |  51.98%\n",
      "\t  7.0 | 050 |   3.96% |  52.48%\n",
      "\t  8.4 | 060 |   4.21% |  52.34%\n",
      "\t  9.8 | 070 |   4.98% |  52.69%\n",
      "0.1\n",
      "\t  1.5 | 010 |   0.76% |  51.16%\n",
      "\t  3.0 | 020 |   2.26% |  51.86%\n",
      "\t  4.5 | 030 |   3.57% |  52.33%\n",
      "\t  6.0 | 040 |   3.00% |  51.84%\n",
      "\t  7.5 | 050 |   3.79% |  52.34%\n",
      "\t  9.0 | 060 |   3.99% |  52.19%\n",
      "\t 10.5 | 070 |   4.67% |  52.51%\n",
      "1.0\n",
      "\t  1.5 | 010 |   0.72% |  51.14%\n",
      "\t  3.0 | 020 |   2.21% |  51.83%\n",
      "\t  4.4 | 030 |   3.54% |  52.30%\n",
      "\t  6.0 | 040 |   2.96% |  51.81%\n",
      "\t  7.5 | 050 |   3.73% |  52.31%\n",
      "\t  9.0 | 060 |   3.92% |  52.15%\n",
      "\t 10.4 | 070 |   4.57% |  52.46%\n",
      "10.0\n",
      "\t  1.5 | 010 |   0.72% |  51.14%\n",
      "\t  3.0 | 020 |   2.20% |  51.82%\n",
      "\t  4.6 | 030 |   3.53% |  52.30%\n",
      "\t  6.1 | 040 |   2.95% |  51.81%\n",
      "\t  7.6 | 050 |   3.72% |  52.30%\n",
      "\t  9.2 | 060 |   3.92% |  52.15%\n",
      "\t 10.6 | 070 |   4.56% |  52.45%\n",
      "100.0\n",
      "\t  1.5 | 010 |   0.72% |  51.14%\n",
      "\t  3.0 | 020 |   2.20% |  51.82%\n",
      "\t  4.5 | 030 |   3.53% |  52.30%\n",
      "\t  6.0 | 040 |   2.95% |  51.81%\n",
      "\t  7.6 | 050 |   3.72% |  52.30%\n",
      "\t  9.1 | 060 |   3.91% |  52.15%\n",
      "\t 10.6 | 070 |   4.56% |  52.45%\n",
      "1000.0\n",
      "\t  1.5 | 010 |   0.72% |  51.14%\n",
      "\t  3.0 | 020 |   2.20% |  51.82%\n",
      "\t  4.6 | 030 |   3.53% |  52.30%\n",
      "\t  6.1 | 040 |   2.95% |  51.81%\n",
      "\t  7.6 | 050 |   3.72% |  52.30%\n",
      "\t  9.2 | 060 |   3.91% |  52.15%\n",
      "\t 10.7 | 070 |   4.56% |  52.45%\n",
      "10000.0\n",
      "\t  1.5 | 010 |   0.72% |  51.14%\n",
      "\t  3.0 | 020 |   2.20% |  51.82%\n",
      "\t  4.5 | 030 |   3.53% |  52.30%\n",
      "\t  6.1 | 040 |   2.95% |  51.81%\n",
      "\t  7.6 | 050 |   3.72% |  52.30%\n",
      "\t  9.1 | 060 |   3.91% |  52.15%\n",
      "\t 10.6 | 070 |   4.56% |  52.45%\n",
      "100000.0\n",
      "\t  1.5 | 010 |   0.72% |  51.14%\n",
      "\t  3.0 | 020 |   2.20% |  51.82%\n",
      "\t  4.5 | 030 |   3.53% |  52.30%\n",
      "\t  6.1 | 040 |   2.95% |  51.81%\n",
      "\t  7.6 | 050 |   3.72% |  52.30%\n",
      "\t  9.1 | 060 |   3.91% |  52.15%\n",
      "\t 10.6 | 070 |   4.56% |  52.45%\n",
      "CPU times: user 6min 2s, sys: 7.52 s, total: 6min 10s\n",
      "Wall time: 2min\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "log_coeffs, log_scores, log_predictions = {}, [], []\n",
    "for C in Cs:\n",
    "    print(C)\n",
    "    model = LogisticRegression(C=C,\n",
    "                               fit_intercept=True,\n",
    "                               random_state=42,\n",
    "                               n_jobs=-1)\n",
    "\n",
    "    pipe = Pipeline([\n",
    "        ('scaler', StandardScaler()),\n",
    "        ('model', model)])\n",
    "    ics = aucs = 0\n",
    "    start = time()\n",
    "    coeffs = []\n",
    "    for i, (train_idx, test_idx) in enumerate(cv.split(X), 1):\n",
    "        X_train, y_train, = X.iloc[train_idx], y.label.iloc[train_idx]\n",
    "        pipe.fit(X=X_train, y=y_train)\n",
    "        X_test, y_test = X.iloc[test_idx], y.label.iloc[test_idx]\n",
    "        actuals = y[target].iloc[test_idx]\n",
    "        if len(y_test) < 10 or len(np.unique(y_test)) < 2:\n",
    "            continue\n",
    "        y_score = pipe.predict_proba(X_test)[:, 1]\n",
    "       \n",
    "        auc = roc_auc_score(y_score=y_score, y_true=y_test)\n",
    "        actuals = y[target].iloc[test_idx]\n",
    "        ic, pval = spearmanr(y_score, actuals)\n",
    "\n",
    "        log_predictions.append(y_test.to_frame('labels').assign(\n",
    "            predicted=y_score, C=C, actuals=actuals))\n",
    "        date = y_test.index.get_level_values('date').min()\n",
    "        log_scores.append([C, date, auc, ic * 100, pval])\n",
    "        coeffs.append(pipe.named_steps['model'].coef_)\n",
    "        ics += ic\n",
    "        aucs += auc\n",
    "        if i % 10 == 0:\n",
    "            print(f'\\t{time()-start:5.1f} | {i:03} | {ics/i:>7.2%} | {aucs/i:>7.2%}')\n",
    "\n",
    "    log_coeffs[C] = np.mean(coeffs, axis=0).squeeze()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate Results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:40:08.719857Z",
     "start_time": "2020-06-17T19:40:08.327809Z"
    }
   },
   "outputs": [],
   "source": [
    "log_scores = pd.DataFrame(log_scores, columns=cols)\n",
    "log_scores.to_hdf('data.h5', 'logistic/scores')\n",
    "\n",
    "log_coeffs = pd.DataFrame(log_coeffs, index=X.columns).T\n",
    "log_coeffs.to_hdf('data.h5', 'logistic/coeffs')\n",
    "\n",
    "log_predictions = pd.concat(log_predictions)\n",
    "log_predictions.to_hdf('data.h5', 'logistic/predictions')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:40:08.730573Z",
     "start_time": "2020-06-17T19:40:08.720819Z"
    }
   },
   "outputs": [],
   "source": [
    "log_scores = pd.read_hdf('data.h5', 'logistic/scores')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:40:08.744497Z",
     "start_time": "2020-06-17T19:40:08.733274Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 825 entries, 0 to 824\n",
      "Data columns (total 5 columns):\n",
      " #   Column  Non-Null Count  Dtype         \n",
      "---  ------  --------------  -----         \n",
      " 0   C       825 non-null    float64       \n",
      " 1   date    825 non-null    datetime64[ns]\n",
      " 2   auc     825 non-null    float64       \n",
      " 3   ic      825 non-null    float64       \n",
      " 4   pval    825 non-null    float64       \n",
      "dtypes: datetime64[ns](1), float64(4)\n",
      "memory usage: 38.7 KB\n"
     ]
    }
   ],
   "source": [
    "log_scores.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:40:08.777702Z",
     "start_time": "2020-06-17T19:40:08.745558Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.00001</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.524515</td>\n",
       "      <td>0.036221</td>\n",
       "      <td>0.432339</td>\n",
       "      <td>0.499494</td>\n",
       "      <td>0.519330</td>\n",
       "      <td>0.545375</td>\n",
       "      <td>0.625760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.00010</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.525371</td>\n",
       "      <td>0.035683</td>\n",
       "      <td>0.442983</td>\n",
       "      <td>0.501441</td>\n",
       "      <td>0.521383</td>\n",
       "      <td>0.544805</td>\n",
       "      <td>0.635539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.00100</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.525972</td>\n",
       "      <td>0.036222</td>\n",
       "      <td>0.443770</td>\n",
       "      <td>0.500582</td>\n",
       "      <td>0.520711</td>\n",
       "      <td>0.543895</td>\n",
       "      <td>0.640955</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.01000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.525556</td>\n",
       "      <td>0.036725</td>\n",
       "      <td>0.436599</td>\n",
       "      <td>0.500354</td>\n",
       "      <td>0.523580</td>\n",
       "      <td>0.550827</td>\n",
       "      <td>0.641932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.10000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.524029</td>\n",
       "      <td>0.036192</td>\n",
       "      <td>0.427531</td>\n",
       "      <td>0.500006</td>\n",
       "      <td>0.523716</td>\n",
       "      <td>0.549544</td>\n",
       "      <td>0.621801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.00000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.523628</td>\n",
       "      <td>0.036113</td>\n",
       "      <td>0.425647</td>\n",
       "      <td>0.498817</td>\n",
       "      <td>0.522675</td>\n",
       "      <td>0.549274</td>\n",
       "      <td>0.616470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10.00000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.523586</td>\n",
       "      <td>0.036102</td>\n",
       "      <td>0.425377</td>\n",
       "      <td>0.498885</td>\n",
       "      <td>0.522475</td>\n",
       "      <td>0.549258</td>\n",
       "      <td>0.615900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100.00000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.523578</td>\n",
       "      <td>0.036099</td>\n",
       "      <td>0.425353</td>\n",
       "      <td>0.498879</td>\n",
       "      <td>0.522488</td>\n",
       "      <td>0.549250</td>\n",
       "      <td>0.615823</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1000.00000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.523576</td>\n",
       "      <td>0.036101</td>\n",
       "      <td>0.425353</td>\n",
       "      <td>0.498877</td>\n",
       "      <td>0.522488</td>\n",
       "      <td>0.549252</td>\n",
       "      <td>0.615831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10000.00000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.523576</td>\n",
       "      <td>0.036101</td>\n",
       "      <td>0.425348</td>\n",
       "      <td>0.498877</td>\n",
       "      <td>0.522488</td>\n",
       "      <td>0.549254</td>\n",
       "      <td>0.615836</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100000.00000</th>\n",
       "      <td>75.0</td>\n",
       "      <td>0.523576</td>\n",
       "      <td>0.036101</td>\n",
       "      <td>0.425348</td>\n",
       "      <td>0.498877</td>\n",
       "      <td>0.522488</td>\n",
       "      <td>0.549254</td>\n",
       "      <td>0.615836</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              count      mean       std       min       25%       50%  \\\n",
       "C                                                                       \n",
       "0.00001        75.0  0.524515  0.036221  0.432339  0.499494  0.519330   \n",
       "0.00010        75.0  0.525371  0.035683  0.442983  0.501441  0.521383   \n",
       "0.00100        75.0  0.525972  0.036222  0.443770  0.500582  0.520711   \n",
       "0.01000        75.0  0.525556  0.036725  0.436599  0.500354  0.523580   \n",
       "0.10000        75.0  0.524029  0.036192  0.427531  0.500006  0.523716   \n",
       "1.00000        75.0  0.523628  0.036113  0.425647  0.498817  0.522675   \n",
       "10.00000       75.0  0.523586  0.036102  0.425377  0.498885  0.522475   \n",
       "100.00000      75.0  0.523578  0.036099  0.425353  0.498879  0.522488   \n",
       "1000.00000     75.0  0.523576  0.036101  0.425353  0.498877  0.522488   \n",
       "10000.00000    75.0  0.523576  0.036101  0.425348  0.498877  0.522488   \n",
       "100000.00000   75.0  0.523576  0.036101  0.425348  0.498877  0.522488   \n",
       "\n",
       "                   75%       max  \n",
       "C                                 \n",
       "0.00001       0.545375  0.625760  \n",
       "0.00010       0.544805  0.635539  \n",
       "0.00100       0.543895  0.640955  \n",
       "0.01000       0.550827  0.641932  \n",
       "0.10000       0.549544  0.621801  \n",
       "1.00000       0.549274  0.616470  \n",
       "10.00000      0.549258  0.615900  \n",
       "100.00000     0.549250  0.615823  \n",
       "1000.00000    0.549252  0.615831  \n",
       "10000.00000   0.549254  0.615836  \n",
       "100000.00000  0.549254  0.615836  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_scores.groupby('C').auc.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot Validation Scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:40:08.783177Z",
     "start_time": "2020-06-17T19:40:08.778904Z"
    }
   },
   "outputs": [],
   "source": [
    "def plot_ic_distribution(df, ax=None):\n",
    "    if ax is not None:\n",
    "        sns.distplot(df.ic, ax=ax)    \n",
    "    else:\n",
    "        ax = sns.distplot(df.ic)\n",
    "    mean, median = df.ic.mean(), df.ic.median()\n",
    "    ax.axvline(0, lw=1, ls='--', c='k')\n",
    "    ax.text(x=.05, y=.9, s=f'Mean: {mean:8.2f}\\nMedian: {median:5.2f}',\n",
    "            horizontalalignment='left',\n",
    "            verticalalignment='center',\n",
    "            transform=ax.transAxes)\n",
    "    ax.set_xlabel('Information Coefficient')\n",
    "    sns.despine()\n",
    "    plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-17T19:40:42.821245Z",
     "start_time": "2020-06-17T19:40:42.098673Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABDAAAAFkCAYAAADWs8tQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3hU1dbA4d/UdEiQDhLpKhCKDS4g3QIiCEgVgoIoCiiKdARCgNCU0CJKUREBpSkfKNIU4SrCDb1LrwklbTJJpu3vjyFDQkJoGSaE9T4PD5lz5uyzzs7AnFmz99oapZRCCCGEEEIIIYQQIg/TejoAIYQQQgghhBBCiFuRBIYQQgghhBBCCCHyPElgCCGEEEIIIYQQIs+TBIYQQgghhBBCCCHyPElgCCGEEEIIIYQQIs+TBIYQQgghhBBCCCHyPElgCCGEEPdB5cqV+e9//+uWtrt27crnn39+y+dZLBYWL158x8fdaPr06VSuXDnTn+rVq9OyZUt+++23O27P0wYPHsyAAQM8HYYQQgghbkHv6QCEEEIIcW+mT5+OwWC45fNWr17NrFmz6Nix4x0dl52QkBBmzZrlehwXF8dXX33FRx99xOrVqwkODr6rdj1h2LBhng5BCCGEELdBRmAIIYQQD7jAwED8/Pxu+Tyl1F0dlx29Xk+RIkVcfypVqsTYsWPR6/X8/vvvd9WmpwQEBBAQEODpMIQQQghxC5LAEEIIIfKAnTt30qlTJ2rUqEHjxo1ZuHBhpv1ff/019evXp1atWoSHh9O1a1eWL18OZJ4KcuHCBXr27EmtWrV49tlnGTJkCMnJyWzbto0hQ4YQExND5cqVOXv2bJYpJAsWLKBJkybUrFmTbt26cezYsTu6Bp1Oh16vR6+/PsBzyZIlrjY7derEnj17XPtSU1MZNmwYTz31FPXr1+fHH3/kySef5OzZs4Bz2s3UqVOpXbs23bt3B2DHjh20a9eOkJAQWrRowcqVK13t3ezab7XvxikkmzZt4rXXXiMkJISXX36ZX375xbWva9euzJw5kx49erimzfzxxx931E9CCCGEuDuSwBBCCCE87NixY4SGhvLMM8+wYsUK+vbty6RJk1wfnH/++WciIyMZMmQIS5Ys4ezZs2zfvj3btsLCwtDr9Sxbtox58+axc+dOvvjiC2rWrMnQoUMpUqQIW7ZsoUSJEpmO+/HHH/n888/p378/K1eupHjx4rz33ntZRm3cTEpKChEREVgsFho0aADAxo0bXXGvWLGC559/ntDQUGJjYwEIDw/nf//7H3PmzOHzzz9nzpw52O32TO1u2LCB77//nmHDhnHp0iV69epFy5YtWbVqFe+//z7h4eFs3Lgxx2u/1b6M/vrrL/r27UurVq346aef6NChAwMGDMiUePnyyy9p0aIFy5cvp2zZsgwbNixL3EIIIYTIfVIDQwghhPCwH374gcqVK/PRRx8BULZsWY4dO8acOXN4+eWX+f777+natSvNmzcHYMKECa4kwY3OnTtH5cqVKVWqFEajkRkzZqDRaDAajQQEBKDVailSpEiW4xYvXkzXrl155ZVXABgxYgSzZs3CZDJlO71i165d1KxZE3BOTUlLS+PJJ5/kq6++onTp0gDMmTOHXr160bRpUwB69+7Nf//7X3788Ue6d+/OypUrXckVgOHDh9OzZ89M5+nQoQPlypUDYOrUqTz33HOEhoYCEBwczPHjx/nmm29o3LjxTa89p3650cKFC2natKlrxEfZsmXZvXs3c+bMYdq0aQA8//zztGnTBoD33nuPVq1aERMTQ8mSJbP9nQghhBAid8gIDCGEEMLDjh07RvXq1TNtq1mzJsePHwfg8OHDVKtWzbWvYMGClC1bNtu2+vXrx6+//krt2rXp168fhw4duulzb4yhatWqrscBAQEMGjToprUhnnjiCVauXMny5csZMGAAAQEBvPXWWzz33HOZ2vzss8+oWbOm6090dDQnT57k+PHjWK3WTNeVnsjIqFSpUq6fjx8/zp9//pmpvdmzZ3Py5MlbXvvt9sutfhcAjz76qOtnf39/AGw2W7b9JIQQQojcIyMwhBBCCA/z8vLKss3hcLimJeh0uixTOW42taNp06b88ccfrF+/ns2bNzNkyBC2bNlCREREjjHc6WokXl5erpVGypYti9lsZuDAgZQuXdqVALDb7QwaNIh69eplOtbX15fLly9nuY7srilj39hsNlq0aMF7772X6TlarfP7mJyu/Xb75Va/C8i+r253qo0QQggh7p6MwBBCCCE8rHz58uzevTvTtp07d7pGCFSoUIH9+/e79plMJk6dOpVtW59//jkXL16kffv2zJgxg/DwcNasWQOQ7ZSJdMHBwRw4cMD12Gw2U7duXY4cOXJb19CjRw8qVqzI8OHDXaMRypYty8WLFwkODnb9mTdvHv/88w9lypTBYDBkuq59+/bleI6yZcty8uTJTO1t2bKFpUuX3vLac9qX0a1+F0IIIYTwHElgCCGEEPfJvn372Lx5c6Y/JpOJzp07c+TIET777DNOnDjBypUr+f7773njjTcA58oX3333HWvXruXYsWMMGzYMs9mcbULi+PHjhIWFceDAAY4fP85vv/1GlSpVAOfIh6SkJE6cOJFlykO3bt1YsGABa9eu5eTJk4wcOZLAwEAqVKhwW9em0+kYMWIER44cca2g8uabb7JgwQJWrFjB6dOnmTFjBsuWLaNcuXL4+fnRpk0bxo8fz65du9i1axdjx44Fbp5o6dy5MwcPHmTKlCmcPHmSX3/9lUmTJlGsWLFbXntO+zLq3r0769at4+uvv+bkyZN8/fXXrFu3ji5dutxWPwghhBDCfWQKiRBCCHGfTJkyJcu2pUuXUq1aNWbPns3EiROZN28eJUuWZNCgQbz++usAtGjRglOnTjFq1CjS0tJ4/fXXKV26dLZTGUaNGkVYWBjdu3fHYrFQu3Zt13lr165NuXLlePXVV1m0aFGm41599VViYmIYO3YsSUlJ1KpVi6ioKNf0jNvx1FNP8eqrrzJ9+nRatGhB8+bNuXLlCjNmzCA2NpZy5coxc+ZMnnjiCQAGDRrEyJEjefPNN/H39+eNN97gs88+u+l0llKlSjF79mwmT57M/PnzKVKkCH379qVz5863vPac9mVUrVo1Jk+ezLRp05g8eTJly5Zl6tSp1K1b97b7QQghhBDuoVEyaVMIIYTI0/755x8effRR19KnNpuN2rVrM3PmzExFMx8069evp06dOvj5+QGwZ88eOnfuzM6dO++4JocQQggh8j8ZgSGEEELkcevXr2fnzp2MHj0aPz8/vv32W/z9/alRo4anQ7snM2bMYOPGjbzzzjskJyczadIkGjduLMkLIYQQQmRLRmAIIYQQeZzJZCIsLIw//viDtLQ0atasybBhw267PkVe9e+//zJmzBj27NmD0WikcePGDB069KZLtwohhBDi4SYJDCGEEEIIIYQQQuR5sgqJEPmM1WqlXr169OzZ063n2bZtG6+88kqW7WFhYUyfPv2O2tq7dy+NGze+p3iSkpLo1q2b63HlypW5evXqPbVpt9uZP38+bdq0oVWrVjRv3pxJkyZhsVjuqV0hhBDifmrcuDF79+7N8Tl2u53evXvz4osv8t13392nyJx+//13IiMjAdiwYQPh4eG52v6KFSvo0KGD6718xIgRJCYm3lObUVFRNGzYkCFDhrB8+XIaNmxIjx49iIyMZOXKlTke26pVq3s6/4wZM1i/fv1dHy/Eg0xqYAiRz6xbt47HH3+cffv2cezYMcqXL+/pkO6LhISEW96c3alRo0aRkJDAN998Q0BAAGazmQEDBjBs2DAmTZqUq+cSQgghPCkmJoYtW7awa9cudDrdfT333r17SUhIAKBJkyY0adIk19r+4osv2Lx5MzNnzqRw4cJYrVbGjRvHu+++y/fff3/X7S5dupTJkyfz9NNP061bN/r370+rVq1u69iffvrprs8Lzi+RHvQphELcLUlgCJHPLFq0iObNm1OmTBm++eYbwsLC2LZtG2PHjsXX15fk5GSWLVvGli1biIqKwmq14u3tzaBBg6hZsyaXL1/m008/5cqVK1y6dIlSpUoxdepUHnnkkTuOpWvXrtSoUYPo6GguXLhAnTp1GDNmDFqtlu+//55vvvkGf39/KlWqlOm4qKgofvvtNxwOB6VKlWLkyJEUK1aMrl27UrBgQY4fP06nTp3o2rWr65ghQ4aQmppKq1atWL58OQDTp09n9+7dxMfH06NHD7p06QLAjz/+yKJFi3A4HAQGBjJixIgsiZ6zZ8+yatUqtmzZgr+/PwC+vr6MHj2a6OhoAAYPHkzFihXp0aNHlseNGzcmJCSEw4cP07dvX6Kioli1ahUAiYmJNGnShPXr15OamkpYWBgXLlzAarXSokUL3n333TvuayGEEOJ2VKtWjV69erF161ZiY2Pp2bMnr776Kj179sRms9GmTRumT59ObGwsEydOJCUlBYPBwIcffsjzzz/P8uXLWbp0KSkpKfj7+/Paa6+53rPPnz9PsWLFaN++Pd999x0nT57kzTff5K233sJsNjNq1ChOnTpFfHw8fn5+TJ48maSkJBYvXozdbicgIIDg4GDWrl3L7NmzuXjxIqNGjeLcuXMopWjdujU9e/bk7NmzdO/enQYNGrB7924SExP55JNPaNasWaZrNZvNzJ49mxUrVlC4cGEADAYDAwcOZN26dVgsFjQaDREREfz111/odDpCQkIYMmQI/v7+xMTE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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes= plt.subplots(ncols=2, figsize=(15, 5))\n",
    "\n",
    "sns.lineplot(x='C', y='auc', data=log_scores, estimator=np.mean, label='Mean', ax=axes[0])\n",
    "by_alpha = log_scores.groupby('C').auc.agg(['mean', 'median'])\n",
    "best_auc = by_alpha['mean'].idxmax()\n",
    "by_alpha['median'].plot(logx=True, ax=axes[0], label='Median', xlim=(10e-6, 10e5))\n",
    "axes[0].axvline(best_auc, ls='--', c='k', lw=1, label='Max. Mean')\n",
    "axes[0].axvline(by_alpha['median'].idxmax(), ls='-.', c='k', lw=1, label='Max. Median')\n",
    "axes[0].legend()\n",
    "axes[0].set_ylabel('AUC')\n",
    "axes[0].set_xscale('log')\n",
    "axes[0].set_title('Area Under the Curve')\n",
    "\n",
    "plot_ic_distribution(log_scores[log_scores.C==best_auc], ax=axes[1])\n",
    "axes[1].set_title('Information Coefficient')\n",
    "\n",
    "fig.suptitle('Logistic Regression', fontsize=14)\n",
    "sns.despine()\n",
    "fig.tight_layout()\n",
    "fig.subplots_adjust(top=.9);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
